﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinnesLayer.LogicBusiness;
using System.Web.Services;
using System.Web.Script.Services;
using EntitiesLayer.Entities;
using System.Data;

namespace ClinicaSanPablo
{ 
    public partial class RegistroNoConformidad : System.Web.UI.Page
    {
        DataTable dt = new DataTable("Area");

        private static Areabl atb = new Areabl();
        private static Combosbl ptb = new Combosbl();
       
        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboOrigen()
        {
            List<Combos> getOrigen = ptb.GetAllComboOrigen();
            return jsonSerializer.Serialize(getOrigen);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboArea()
        {
            List<Combos> getArea = ptb.GetAllComboArea();
            return jsonSerializer.Serialize(getArea);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboRequisito()
        {
            List<Combos> getRequisito = ptb.GetAllComboRequisito();
            return jsonSerializer.Serialize(getRequisito);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string DerivarNC(string EGerente, string EA1, string EA2, string EA3, string EA4, string codigo)
        {
            try
            {
                Correobl enviacorreo = new Correobl();
                Correo bp = enviacorreo.ConsultaTipoCorreo("3");
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                // Dirección de destino
                string destinatario = "";
                destinatario += EGerente;
                destinatario += (EA1 != "") ? "," + EA1 : "";
                destinatario += (EA2 != "") ? "," + EA2 : "";
                destinatario += (EA3 != "") ? "," + EA3 : "";
                destinatario += (EA4 != "") ? "," + EA4 : "";
                if (!string.IsNullOrEmpty(destinatario))
                    message.To.Add(destinatario);
                // Asunto 
                message.Subject = bp.TituloCorreo;
                // Mensaje 
                message.Body = bp.DetalleCorreo + " Su código de Servico No Conformidad es: " + codigo + "http://localhost:4640/RegistroNoConformidad.aspx";
                System.Net.Mail.SmtpClient smpt = new System.Net.Mail.SmtpClient();
                smpt.Send(message);

                var data = new
                {
                    resultado = true
                };
                return jsonSerializer.Serialize(data);                 
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }

        }        
        
        private void generarTabla() {
            dt.Columns.Add("Codigo", Type.GetType("System.String"));
            dt.Columns.Add("Area", Type.GetType("System.String"));
            dt.Columns.Add("Jefe", Type.GetType("System.String"));
            dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };
            Session["dt"] = dt;
        }

        private void quitarRegistro(string codigo)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["dt"];
            DataRow dr;
            dr = dt.Rows.Find(codigo);
            dr.Delete();
            gvOtrasAreas.DataSource = dt;
            gvOtrasAreas.DataBind();
            Session["dt"] = dt;
        }

        private void limpiar()
        {
            txtDescripcion.Text = "";
            txtAuditoria.Text = "";
            txtFecha.Text = "";
            lblMensajeAdd.Text = "";
            txtDescripcion.Focus();
            gvOtrasAreas.DataSource = null;
            gvOtrasAreas.DataBind();

            Session["dt"] = null;
            generarTabla();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
    
            if (Page.IsPostBack)
            {
                return;
            }
         
            generarTabla();
            

        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            string cmbOtraArea = (string)Request.Form["ctl00$master$cmbOtrasAreas"];
            if (cmbOtraArea != "0") {

                DataTable dt = new DataTable();
                dt = (DataTable)Session["dt"];
                DataRow dr;
                dr = dt.NewRow();
                if (dt.Rows.Find(cmbOtraArea) == null)
                {
                    lblMensajeAdd.Text = "";
                    dr["Codigo"] = atb.BuscarArea(cmbOtraArea).Cod_area;
                    dr["Area"] = atb.BuscarArea(cmbOtraArea).Des_area;
                    dr["Jefe"] = atb.BuscarArea(cmbOtraArea).Jef_area;
                    dt.Rows.Add(dr);
                    gvOtrasAreas.DataSource = dt;
                    gvOtrasAreas.DataBind();
                    Session["dt"] = dt;
                }
                else
                {
                    lblMensajeAdd.Text = "No se puede ingresar la misma area";
                }
            }
                      
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            string cmbOrigen = (string)Request.Form["ctl00$master$cmbOrigen"];
            string cmbArea = (string)Request.Form["ctl00$master$cmbAreaInvolucrada"];
            string cmbRequisito = (string)Request.Form["ctl00$master$cmbRequisito"];

            if (cmbOrigen == "ORI003")
            {
                if (txtFecha.Text == "")
                {
                    string script = @"<script type='text/javascript'>                      
                                        alert('Ingresar la fecha de la auditoria'); 
                                    </script>";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                }
                else if (txtAuditoria.Text == "")
                {
                    string script = @"<script type='text/javascript'>                      
                                        alert('Ingresar el nombre de la auditoria'); 
                                    </script>";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                }
                else
                {
                    NoConformidadbl NoConformidadbl = new NoConformidadbl();
                    NoConformidad insertnc = new NoConformidad();

                    NoConformidad.Item Item = new NoConformidad.Item();
                    List<NoConformidad.Item> ListaItems = new List<NoConformidad.Item>();

                    insertnc.CodNC = "NC000" + NoConformidadbl.GetSecuencia();                
                    idcod.Value = insertnc.CodNC;
                    insertnc.DesNC = txtDescripcion.Text;

                    DateTime fechaHoy = DateTime.Today;
                    string fechaActual = fechaHoy.ToString("dd/MM/yyyy");

                    insertnc.FechaRegistroNC = Convert.ToDateTime(fechaActual);
                    insertnc.CodOrigen = cmbOrigen;
                    insertnc.CodArea = cmbArea;
                    insertnc.CodRequisito = cmbRequisito;
                    insertnc.CodTipoSolicitud = "TS004";
                    insertnc.CodUsuario = Session["id_usuario"].ToString();
                    insertnc.NomAuditoria = txtAuditoria.Text;
                    insertnc.FecAuditoria = Convert.ToDateTime(txtFecha.Text);
                    insertnc.VEST_CODESTADO = "EST001"; 
                    insertnc.VREC_USUARIO_CREACION = Session["id_usuario"].ToString();
                    insertnc.DREC_FECHA_CREACION=Convert.ToString(DateTime.Now);

                    DataTable dt = new DataTable();
                    dt = (DataTable)Session["dt"];

                    foreach (DataRow dr in dt.Rows)
                    {
                        Item = new NoConformidad.Item();
                        Item.CodOtraArea = Convert.ToString(dr["Codigo"]);
                        ListaItems.Add(Item);
                    }
                    insertnc.ListaItems = ListaItems;
                    NoConformidadbl.InsertNoConformidad(insertnc);
                    string script = @"<script type='text/javascript'>alert('Se registro correctamente con auditoria');</script>";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                }
            }
            else
            {

                NoConformidadbl NoConformidadbl = new NoConformidadbl();
                NoConformidad insertnc = new NoConformidad();

                NoConformidad.Item Item = new NoConformidad.Item();
                List<NoConformidad.Item> ListaItems = new List<NoConformidad.Item>();

                insertnc.CodNC = "NC000" + NoConformidadbl.GetSecuencia();
                idcod.Value = insertnc.CodNC;
                insertnc.DesNC = txtDescripcion.Text;

                DateTime fechaHoy = DateTime.Today;
                string fechaActual = fechaHoy.ToString("dd/MM/yyyy");

                insertnc.FechaRegistroNC = Convert.ToDateTime(fechaActual);
                insertnc.CodOrigen = cmbOrigen;
                insertnc.CodArea = cmbArea;
                insertnc.CodRequisito = cmbRequisito;
                insertnc.CodTipoSolicitud = "TS004";
                insertnc.CodUsuario = Session["id_usuario"].ToString();
                insertnc.NomAuditoria = txtAuditoria.Text;
                insertnc.FecAuditoria = Convert.ToDateTime(DateTime.Now);
                insertnc.VEST_CODESTADO = "EST001"; 
                insertnc.VREC_USUARIO_CREACION = Session["id_usuario"].ToString();
                insertnc.DREC_FECHA_CREACION = Convert.ToString(DateTime.Now);

                DataTable dt = new DataTable();
                dt = (DataTable)Session["dt"];

                foreach (DataRow dr in dt.Rows)
                {
                    Item = new NoConformidad.Item();
                    Item.CodOtraArea = Convert.ToString(dr["Codigo"]);

                    ListaItems.Add(Item);
                }

                insertnc.ListaItems = ListaItems;

                NoConformidadbl.InsertNoConformidad(insertnc);
               // limpiar();
                string script = @"<script type='text/javascript'> alert('Se registro correctamente sin auditoria');</script>";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);           
            }

             
        }

        protected void gvOtrasAreas_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string codigo = (gvOtrasAreas.Rows[e.RowIndex].Cells[0].Text).ToString();

            quitarRegistro(codigo);
        }




    }
}